package interfaces.view;

import interfaces.model.Cell;

/***
 * CellDrawer is a part of the VIEW (in the Model View Controller design pattern). 
 * It accesses the Board (which is a singleton) and draws its cells and their state.
 * Essentially, CellDrawer draws the state of the game on the screen.
 * 
 * CellDrawer can be implemented in different ways to create different skins for your
 * cellular automaton program.
 * 
 * @author tomerborenstein
 *
 */

public interface CellDrawer {
	/***
	 * This method is called by drawBoard() which passes in a cell for drawCell to draw.
	 * This method is public to give flexibility to future plugins.
	 * 
	 * @param c - the cell to be drawn
	 */
	public void drawCell(Cell c);
	
	/***
	 * This method (re)draws the whole Board of cells once. It accesses the Board singleton,
	 * loops through all of the cells, and passes them to drawCell to draw them.
	 */
	public void drawBoard();
}
